Flows
Flows are an alternative voice agent implementation that uses a nodes-and-transitions architecture instead of relying on a single prompt.
Flows let you:
-
Break the conversation into discrete parts (nodes) with their own logic and purpose.
-
Define transitions between nodes (rather than leaving the flow purely to the LLM).
-
Manage more complex scenarios with predictable, traceable outcomes.
Flows provide greater control over how conversations evolve, compared to single-prompt Agents. While the flow’s state machine is fully deterministic and well-defined, the LLMs are still used for conversation handling (for a single turn with much shorter prompts), named entity extraction and intent detection. Flows are particularly useful when you must enforce business logic, branch flows, or coordinate multiple dialog paths.
Core components
Below are the core Flow components.
Flow settings
These apply to the entire agent and include:
-
Global prompt that sets personality and behavioral tone
-
Default LLM, voice and language configurations
-
Agent-wide variables and configuration
Nodes
Each node is a discrete unit of logic or interaction. Common node types include:
-
Conversation nodes: for regular dialogue (user asks, agent responds)
-
Tool nodes: for executing API calls or backend logic
-
Logic nodes: for branching/conditional logic
-
Call control nodes: for terminating or transferring the call
Transitions
Transitions define how you move from one node to another. They support:
-
Conditional transitions: for example, “
if user says X, go to node Y” -
Default of fallback paths
-
Dynamic routing based on conversation context or state
Variables
Variables can be extracted during the conversation flow and be used:
-
In conversation instructions: for example, “
say hello {username}” -
As an alternative to “free text” transitions for stricter routing
Visual builder
Flows are created using visual builder that provides an intuitive, drag-and-drop, no-code interface for designing the conversation flow logic. Instead of managing prompts and transitions through raw text or configuration files, you simply connect nodes to shape the conversation’s behavior - making design, debugging, and iteration faster and more transparent.